package com.torresquintero.oncologos.common.entityUtilities;

import java.util.List;

import javax.persistence.EntityManager;

import com.torresquintero.oncologos.common.factory.FactoryEntityManager;
import com.torresquintero.oncologos.entidades.Medico;

/**
 * Clase que implementa las consultas basicas sobre un medico 
 * que se efectuan en toda la aplicacion.
 * @author Camilo Andres
 *
 */
@SuppressWarnings("unchecked")
public class MedicoUtilities {

	
	/**
	 * Variable statica para el partron Singleton
	 */
	private static MedicoUtilities medicoUtilities;
	/**
	 * Administrador de entidades.
	 */
	private static EntityManager em;
	
	
	/**
	 * Constructor, inicializa el EntityManager.
	 */
	private MedicoUtilities() {
		
		em=FactoryEntityManager.getEm();
	}
	
	/**
	 * Metodo para obtener una instancia singleton de esta clase.
	 * @return
	 */
	public static MedicoUtilities getInstance(){
		
		if(medicoUtilities==null){
			medicoUtilities=new MedicoUtilities();
		}
		return medicoUtilities;
	}
	
	
	/**
	 * Metodo para buscar un Medico.
	 * @param NIT numero que identifica a el medico.
	 * @return el Medico.
	 */
	public static  Medico buscarMedico(String NIT){
            em=FactoryEntityManager.getEm();
		return (Medico) em.createNamedQuery(Medico.FIND_MEDICO_BY_NIT)
				.setParameter(Medico.PARAMETRO_NIT, NIT).getSingleResult();
	}
	/**
	 * MEtodo para listar todos los medicos.
	 * @return lista de medicos.
	 */
	public static List<Medico> listarTodosLosMedicos(){
            em=FactoryEntityManager.getEm();
		return em.createNamedQuery(Medico.FIND_ALL).getResultList();
	}
	
}
